﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<assert.h>

//int main()
//{
//	char str[] = "-54321";
//	int ret = atoi(str);
//	printf("%d", ret);
//
//	return 0;
//}
//atoi函数的模拟
//int My_atoi(const char* str)
//{
//	//排除NULL和'\0'
//	assert(str);
//	if (*str == '\0')
//		return 0;
//	//排除空白字符
//	while (isspace(*str))
//	{
//		str++;
//	}
//	//判断正负
//	int flag = 1;
//	if (*str == '+')
//	{
//		flag = 1;
//		str++;
//	}
//	if(*str =='-')
//	{
//		flag = -1;
//		str++;
//	}
//	
//	long long ret = 0;
//	while (*str != '\0')
//	{
//		//判断十进制
//		if (isdigit(*str))
//		{
//			ret = ret * 10 + (*str - '0') * flag;
//			str++;
//			if (ret > INT_MAX)
//				ret = INT_MAX;
//			if (ret < INT_MIN)
//				ret = INT_MIN;
//		}
//		else
//		{
//			return (int)ret;
//			//返回0
//		}
//		
//	}
//	return (int)ret;
//}
//int main()
//{
//	char str[] = "4253424";
//	int ret = My_atoi(str);
//	printf("%d", ret);
//	return 0;
//}


//int main()
//{
//	struct s1
//	{
//		int a;//4
//		char b;//1
//		float c;//4
//	};
//	struct s1 test;
//	printf("%zu\n", sizeof(struct s1));//12
//	printf("%zu\n", sizeof(test.c));
//	struct S4 
//	{ 
//		char c1;
//		struct s1 s1; 
//		double d;	
//	};
//	printf("%zu\n", sizeof(struct S4));//24
//
//	return 0;
//}


//#include <stdio.h>
//#pragma pack(1)
////设置默认对⻬数为1 
// struct S 
// {
//	 char c1; 
//	 int i; 
//	 char c2;
// };
// //#pragma pack() 
// //取消设置的对⻬数，还原为默认 
// int main()
// { //输出的结果是什么？ 
//	printf("%zu\n", sizeof(struct S));
//	return 0;
// }

struct A 
{
	int _a : 3;
	int _b : 4; 
	int _c : 5;
	int _d : 4; 
};
int main()
{
	printf("%zu\n", sizeof(struct A));
	return 0;
}